// 合并接口
interface Tit{
    age:number
}
interface Tit{
    age:number
    name:string
}
let obj:Tit={
    age:54,
    name:'bjvkkv'
}
console.log(obj);
// 同名接口不会覆盖，会进行合并，也可以理解成继承
// 在同名接口中，定义相同属性名时，应该保持类型一致

interface ZZ{
    aa:number
}
// 别名
type Zhang=Tit|ZZ

type Zhang1=string|number




interface A{
    name:string
}
interface B{
    age:number
}

// 联合
type Zb=A|B
// 交叉类型 
type Zc=A&B
let obj1:Zc={
   name:'sdsd',
   age:52 
}



// 任意属性
interface Info{
    name:string,
    age:number,
    [aa:number|string]:string|number
}

let obj2:Info={
    name:'dsf',
    age:54,
    55:'df',
    'gj,':54
}


// 数组、对象可索引属性
interface ArrType{
    [index:number]:string
}
let arr:ArrType=['zzy','zyz']
console.log(arr);

console.log(arr[1],11111);

interface objType{
    [index:string]:string
}
let obj3:objType={
    type:'张真源'
}
console.log(obj3.type);

